package com.zw.pdm.module.est.mapper;

import com.zw.pdm.entity.basic.Equ;
import com.zw.pdm.entity.basic.EquType;
import com.zw.pdm.entity.craft.CraMakeSheet;
import com.zw.pdm.entity.est.Card;
import com.zw.pdm.entity.est.CardChange;
import com.zw.pdm.entity.est.CardDetail;
import com.zw.pdm.entity.est.CardDetailChange;
import com.zw.pdm.module.est.model.CardModel;
import com.zw.pdm.module.est.model.CraMakeSheetModel;
import com.zw.pdm.module.est.model.RouteQueryModel;
import com.zw.pdm.module.est.model.WorkTimeQueryModel;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @Description:
 *
 * @Author: China.sgl
 * @Date: 2020/8/8 13:28
 */
public interface CardMapper {

    /** 工艺卡提交列表查询 */
    List<Card> findWithCardList(Card card);

    /** 按ID删除 */
    int updateIsDelById(@Param("id") Integer id, @Param("isDel") Integer isDel);

    /** 按ID修改状态 */
    int updateStatusById(@Param("id") Integer id, @Param("status") Integer status);

    /** 按ID修改状态和驳回原因 */
    int updateStatusAndRejectReasonById(@Param("id") Integer id, @Param("status") Integer status, @Param("reason") String reason);

    /** 按IDS修改状态 */
    int updateStatusByIds(@Param("ids") Integer[] ids, @Param("status") Integer status);

    /** 按IDS修改状态和原因 */
    int updateStatusAndRejectByIds(@Param("ids") Integer[] ids, @Param("status") Integer status, @Param("reason") String reason);

    /** 工艺卡校对列表查询 */
    List<CraMakeSheet> findWithCardVerify(CraMakeSheet craMakeSheet);

    /** 工艺卡校对子列表查询 */
    List<CardModel> findSlaveWithCardVerify(CardModel card);

    /** 修改校对状态 */
    int updateIsCheckAndVerifyTimeById(@Param("id") Integer id, @Param("isCheck") Integer isCheck, @Param("verifyTime") Date verifyTime);

    /** 修改状态和驳回原因 */
    int updateStatusAndReject(Card card);

    /** 查询工艺图纸目录数量 */
    int countCraMakeDetailBySheetId(Integer id);

    /** 查询图纸目录对应工艺卡已提交并已审核的数量 */
    int countCardByCraMakeSheetId(Integer id);

    /** 修改工艺卡图纸目录转定额状态 */
    int updateMakeSheetIsQuotaAndTurnTime(@Param("id") Integer id, @Param("status") Integer status, @Param("turnTime") Date time);

    /** 按工艺图纸目录ID 修改工艺卡状态 */
    int updateStatusAndTurnTimeByCraMakeSheetId(@Param("id") Integer id, @Param("status") Integer status, @Param("turnTime") Date time);

    /** 工时编制列表查询 */
    List<CraMakeSheet> findWithWorkTime(CraMakeSheet craMakeSheet);

    /** 工时编制子列表查询 */
    List<CardModel> findSlaveWithWorkTime(CardModel card);

    /** 按 make 表 id 统计工艺卡已定额的数量 */
    int countIsQuotaCardByCraMakeSheetId(Integer id);

    /** 按ID修改 make 表 提交状态和时间 */
    int updateCraMakeSheetCommitTime(@Param("id") Integer id, @Param("commitTime") Date time);
    int updateCraMakeSheetCommitStatus(@Param("id") Integer id, @Param("status") Integer status);

    /** 按 make 表 id 修改工艺卡状态和提交时间 */
    int updateStatusAndCommitTimeByCraMakeSheetId(@Param("id") Integer id, @Param("status") Integer status, @Param("commitTime") Date time);

    /** 按ID修改定额状态 */
    int updateIsQuotaById(@Param("id") Integer id, @Param("isQuota") Integer isQuota);

    /** 查询工艺卡状态按 makeSheetId */
    int countStatusByMakeSheetId(@Param("id") Integer id, @Param("status") Integer status);

    /** 按工艺卡ID 查询 makeSheetId */
    Integer getMakeSheetIdByCardId(Integer id);

    /** 按 id 修改 makeSheet表 提交状态 */
    int updateMakeSheetIsCommitById(@Param("id") Integer makeSheetId, @Param("isCommit") Integer isCommit);

    /** 按 makeSheetId 查询工艺卡 */
    List<Card> findByMakeSheetId(Integer id);

    /** 工艺卡审核列表查询 */
    List<CraMakeSheetModel> findWithCardCheck(CraMakeSheet craMakeSheet);

    /** 工艺卡审核子列表查询 */
    List<Card> findSlaveWithCardCheck(Card card);

    /** 按 makeSheetId 修改工艺卡状态和下发时间 */
    int updateStatusAndNotifyTimeByCraMakeSheetId(@Param("id") Integer id, @Param("status") Integer status, @Param("notifyTime") Date date);
    int updateCraSheetNotifyTimeByCraMakeSheetId(@Param("id") Integer id, @Param("notifyTime") Date date);
    int updateCraSheetStatusByCraMakeSheetId(@Param("id") Integer id, @Param("status") Integer status);

    /** 按主键修改 任务分配明细表 审核 状态 */
    int updateCraReleaseDetailIsSuccessById(@Param("id") Integer id, @Param("status") Integer status);

    /** 按 制作件清单 ID 查询 审核同意状态平均值 */
    double findAvgIsSuccessByMakeId(Integer id);

    /** 修改 制作件清单主表 审核人为空 */
    int updateMakeSheetCheckNamesById(Integer id);

    /** 修改 工艺任务分配明细表 同意状态 */
    int updateReleaseDetailIsSuccessByMakeSheetId(Integer id);

    /** 按 工艺卡ID 删除 工艺路线表数据 */
    int delCraftRouteByCardId(Integer cardId);

    /** 按 工艺制作件清单ID 删除 工时表 数据 */
    int deleteWorkTimeByMakeSheetId(Integer id);

    /** 查询 工艺路线 */
    List<RouteQueryModel> findWithRouteQuery(RouteQueryModel routeQueryModel);

    /** 查询 机加工时 */
    List<WorkTimeQueryModel> findWithWorkTimeQuery(WorkTimeQueryModel workTimeQueryModel);

    /** 工艺卡查询 */
    List<Card> findWithCardQuery(Card card);

    /** 变更提醒查询 */
    List<CraMakeSheetModel> findWithChaWarn(CraMakeSheetModel craMakeSheetModel);

    /** 修改提醒状态 */
    int updateMakeDetailChangeStatusById(Integer id);

    /** 按工艺卡 ID 删除 工时表数据 */
    int deleteWorkTimeByCardId(Integer id);

    /** 修改制作件清单分配表同意状态 */
    int updateReleaseDetailIsSuccessByCardId(Integer id);

    /** 修改制作件清单主表 审核人， 定额状态， 转定额时间， 提交状态， 全部提交时间 */
    int updateMakeSheetByCardId(Integer id);

    /** 修改制作件清单从表 处理状态 */
    int updateMakeDetailChangeStatusByCardId(Integer id);

    /** 按图号查询 工艺卡 */
    Card findByDrawNo(@Param("proCode") String proCode, @Param("partId") Integer partId, @Param("drawNo") String drawNo);

    /** 查询 dsn_make_change_detail 表的 sheetID */
    Integer findHrefId(Integer id);

    /** 查询 dsn_draw_change_detail 的 sheetId */
    Integer findHrefId2(Integer id);

    /** 校对新列表 */
    List<Card> findWithNewCardVerify(Card card);

    /** 按工艺卡ID修改状态和转定额时间 */
    int updateStatusAndTurnTimeById(@Param("id") Integer id, @Param("status") Integer status, @Param("turnTime") Date turnTime);

    int updateStatusAndTurnTimeByIds(@Param("ids") Integer[] ids, @Param("status") Integer status, @Param("turnTime") Date turnTime);

    List<Card> findWithCardBatchPrint(Card card);

    List<CardModel> findByIds(Integer[] ids);

    int updateCraMakeSheetNotifyById(@Param("id") Integer id, @Param("status") Integer status, @Param("notifyTime") Date date);

    int updateCraMakeSheetChangeNotify(@Param("id") Integer id, @Param("changeNotify") Integer changeNotify);

    int updateCraMakeSheetChangeCommit(@Param("id") Integer id, @Param("changeCommit") Integer changeCommit);

    int updateCraSheetCommitTimeByCraMakeSheetId(@Param("id") Integer id, @Param("commitTime") Date commitTime);

    int updateCraMakeSheetChangeCommitByCardId(Integer id);

    int updateCraMakeSheetChangeNotifyByCardId(Integer id);

    List<Card> findWithCardChangeQuery(Card card);

    CardChange getTopChangeCardByCardId(Integer id);

    List<CardDetailChange> findCardChangeDetailByChangeCardId(Integer id);

    List<WorkTimeQueryModel> findWithWorkTimeTotalQuery(WorkTimeQueryModel workTimeQueryModel);

    List<CardDetail> findDetailByCardId(Integer id);

    List<CardChange> findCardchangeByCardId(Integer id);

    void updateCraMakeSheetProd(Integer id);

    List<WorkTimeQueryModel> findWithWorkTimeTotalQuery1(WorkTimeQueryModel workTimeQueryModel);

    int updateCraMakeSheetNewChangeCommitByCardId(@Param("ids") Integer[] ids);

    CraMakeSheet findCraMakeSheet(Integer id);

    Card findCraCardSheetById(Integer id);

    void updateCraCardSheetStatus(Integer id);

    List<Equ> findBufByName(String name);

    int updateCraSheetStatusByCraMakeSheetIdOne(@Param("id") Integer id, @Param("status") Integer status);
}
